package me.chanjar.weixin.open.util.json;

import com.google.gson.*;
import me.chanjar.weixin.common.util.json.GsonHelper;
import me.chanjar.weixin.open.bean.result.WxOpenAuthorizerListResult;

import java.lang.reflect.Type;
import java.util.*;

/**
 * @author robgao
 * @Email 315789501@qq.com
 */
public  class WxOpenAuthorizerListResultGsonAdapter implements JsonDeserializer<WxOpenAuthorizerListResult> {

  private static final String AUTHORIZER_APPID="authorizer_appid";
  private static final String REFRESH_TOKEN="refresh_token";
  private static final String AUTH_TIME="auth_time";
  @Override
  public WxOpenAuthorizerListResult deserialize(JsonElement jsonElement, Type type, JsonDeserializationContext jsonDeserializationContext) throws JsonParseException {
    JsonObject jsonObject = jsonElement.getAsJsonObject();

    WxOpenAuthorizerListResult wxOpenAuthorizerListResult= new WxOpenAuthorizerListResult();
    wxOpenAuthorizerListResult.setTotalCount(GsonHelper.getInteger(jsonObject, "total_count").intValue());

    List<Map<String,String>> list = new ArrayList<>();
    Iterator<JsonElement> jsonElementIterator = jsonObject.getAsJsonArray("list").iterator();

    while(jsonElementIterator.hasNext()){
      JsonObject authorizer = jsonElementIterator.next().getAsJsonObject();
      Map<String,String> authorizerMap = new HashMap<>(10);

      authorizerMap.put(AUTHORIZER_APPID, GsonHelper.getString(authorizer,AUTHORIZER_APPID));
      authorizerMap.put(REFRESH_TOKEN, GsonHelper.getString(authorizer,REFRESH_TOKEN));
      authorizerMap.put(AUTH_TIME,  GsonHelper.getString(authorizer,AUTH_TIME));
      list.add(authorizerMap);
    }
    wxOpenAuthorizerListResult.setList(list);
    return wxOpenAuthorizerListResult;
  }
}
